세미프로젝트2_01_샌드박스 구축을 통한 악성코드 자동 탐지 및 분석 시스템 개발
두 번째 세미프로젝트
이번에는 Malware 분석을 위한 샌드박스를 구축하고 자동 탐지 및 분석 시스템을 개발하는 과제다.
주제를 보자마자 VM이겠거니 했다. 그리고 환경 구축이 매우 귀찮아질 거라는 걸 직감했다.
Ghidra나 IDA 같은 정적 분석 도구는 조금이나마 써본 적이 있지만 동적 분석 쪽은 처음이다. 굳이 해야 할 이유도 없었다.
오픈소스 도구인 CAPEv2를 쓰라고 한다.
오픈소스란 말을 듣는 순간 또 한번 '드럽게 귀찮겠다'는 생각이 들었다.
오픈소스 셋업이라는 게 다 그렇다. 문서는 부실하고 에러는 환경마다 다르고....
아무튼 저번 프로젝트의 교훈이 있다. 이번에는 혼자 독박쓰지 않으려고 했다.
원래 같았으면 "제가 제 서버에 환경 올려둘게요. 접속해서 분석하시고 룰이나 스크립트 붙여봐요." 했겠지만 이번엔 아니다.
다들 공부하려고 온 거 아닌가. 환경 구축 정도는 각자 해봐야지.
그래서 이번에는 각자 자신의 PC에서 CAPE 환경을 구축하기로 했다.
홈 서버에 올리려다가
나는 사용 중인 리눅스 홈 서버가 있다. 그냥 사소하게, 게임 관련 간단한 앱이나 블로그 서비스를 올려두거나, 뭐... 젤리핀 같은걸 올리는 간단한 서버다.
거기에 올리려고 했는데 CAPE가 시스템과 커널 수준의 설정을 건드리려고 하길래 잽싸게 그만뒀다.
네트워크 브릿지 설정부터 KVM 모듈 로딩까지 상당히 딥한 곳을 건드리길래, 잘못 하다가는 기존 홈 서버에서 돌아가고 있는 서비스들에 영향을 끼칠 것 같았다.
어떻게 해야 하지 고민하다가 용량도 많이 남으니까 그냥 듀얼부팅으로 가자 싶었다.
어차피 계속 켜 놓을 환경도 아니고, 필요할 때 잠깐 부팅해서 쓰자는 것이었다.
리눅스 서버를 별도로 설치해서 CAPE 전용 환경으로 격리해 구축하고, 희생 윈도우는 메인 PC 윈도우에서 virt-viewer로 접속해 설정하는 구조로 진행했다.
환경 구축
Ubuntu Server 22.04.5 LTS를 올리고 부팅하고 볼륨 설정을 잡았다.
최종 구성은 이렇다.
Native Linux(Host)
- OS: Ubuntu Server 22.04.5 LTS
- CPU: 4 Cores / RAM: 16GB
- cape-rooter, cape-processor, cape-web, cape(cuckoo.py)를 Poetry 가상환경 기반으로 구동
- 네트워크: virbr0 인터페이스를 통한 Host-only/NAT 구성
- 스토리지: CAPEv2/storage/ 경로에 분석 데이터 저장
- 분석 카테고리: static, pcap, url, file 지원
Windows 10(희생 VM)
- KVM 모듈을 사용하여 Libvirt 기반 VM 제어
- 파이썬 등 기본 환경 설치
- Windows Defender 및 백신 비활성화
- CAPE_Ready 스냅샷 생성 후 분석 에이전트(agent.py) 상주
기본 설정과 구축이 빡셌다. 이놈의 가상 환경은 해도 해도 적응이 안 된다.
cape 사용자가 libvirt 및 kvm 그룹에 포함되지 않아서 VM 제어에 실패하는 문제도 있었는데 그룹 추가하고 재로그인하니까 해결됐다.
이런 거 하나하나가 시간을 잡아먹는다.
WannaCry 분석 성공
vx-underground에서 WannaCry 샘플을 받아서 분석을 돌려봤다.
격리된 리눅스 서버의 storage 볼륨으로 curl을 이용해 샘플을 받고 CAPE 엔진이 희생 윈도우에 파일을 보내 분석하는 구조다.
분석이 끝나면 희생 VM은 스냅샷으로 복구된다.
- 파일명:
ed01ebfbc9eb5bbea545.exe - 탐지 시그니처:
ransomware_files: "Creates a known WannaCry ransomware decryption instruction / key file." (위험도 3/High)antivm_checks_available_memory: 가상 환경 탐지 시도- 시스템 정보 쿼리: 컴퓨터 이름, 사용자 이름, 키보드 레이아웃 등 확인
샌드박스 구축 자체는 성공이다. 실제 랜섬웨어 샘플을 넣었을 때 기대한 시그니처가 잡힌다는 건 파이프라인이 제대로 도는 거니까.
여담
구축하면서 Proxmox라는 걸 좀 더 공부하게 됐다. 하이퍼바이저 기반 가상화 플랫폼인데 기존 홈 서버가 좀 주먹구구식으로 돌아가고 있어서 나중에 시간 나면 이전해볼 생각이다. 기존 홈 서버의 서비스들을 Proxmox 위로 올리면 관리가 훨씬 깔끔해질 것 같다.